/****************************************************************************
** @brief state
****************************************************************************/

#ifndef STATUS_H
#define STATUS_H

#include "gun.h"

class Status
{
public:
    ///
    /// \brief The State enum
    ///
    enum State {
        kInvalid = 0, /* ... */
        kIdle,        /* ... */
        kReady,       /* ... */
        kStarting,    /* ... */
        kCharging,    /* ... */
        kStoping,     /* ... */
        kFinish,      /* ... */
        kFault,       /* ... */
    };

    Status();
    virtual ~Status();

    State state() const
    {
        return state_;
    }

    ///
    /// \brief Process
    ///
    virtual void Process(Gun *) = 0;

protected:
    State state_ = kInvalid;

    void ChangeState(Gun *, Status *);

private:

};

#endif // STATE_H
